﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Interfaces;
using System.Collections;

namespace Model
{
    public class KundeColl
    {
        // atributter
        private List<Kunde> kunder;

        //konstruktør
        public KundeColl()
        {
            kunder = new List<Kunde>();
        }

        #region Operationer på Kunde-objekter

        // Metode til at oprette et kundeobjekt og tilføje det til listen med kunder
        public void OpretKunde(int kundeNr, int cvrNr, string firmanavn, string kontaktperson, string email, int tlfNr, string adresse, int postnr, string by)
        {
            Kunde kunde = new Kunde(kundeNr, cvrNr, firmanavn, kontaktperson, email, tlfNr, adresse, postnr, by);
            kunder.Add(kunde);
        }

        // Metode til at finde et kundeobjekt
        public Kunde FindKunde(int kundeNr)
        {
            foreach (Kunde k in kunder)
            {
                if (k.KundeNr == kundeNr)
                {
                    return k;
                }
            }

            return null;
        }

        // Metode til at redigere et kundeobjekt
        public void Redigerkunde(int kundeNr, int cvrNr, string firmanavn, string kontaktperson, string email, int tlfNr, string adresse, int postnr, string bynavn)
        {
            Kunde kunde = FindKunde(kundeNr);
            kunde.CvrNr = cvrNr;
            kunde.Firmanavn = firmanavn;
            kunde.Kontaktperson = kontaktperson;
            kunde.Email = email;
            kunde.TlfNr = tlfNr;
            kunde.Adresse = adresse;
            kunde.Postnr = postnr;
            kunde.Bynavn = bynavn;
        }

        // Metode til at hente kunde iterator
        public IEnumerator GetKunder()
        {
            return kunder.GetEnumerator();
        }

        // kald af metode til at associere et projekt-objekt til et kunde-objekt
        public void TilknytProjekt(int kundeNr, Projekt etProjekt)
        {
            Kunde kunde = FindKunde(kundeNr);
            kunde.TilknytProjekt(etProjekt);
        }

        // kald af metode til at hente liste af associerede projekter
        public IEnumerator GetMineProjekter(int kundeNr)
        {
            Kunde kunde = FindKunde(kundeNr);
            return kunde.GetMineProjekter();
        }

        // kald af metode til at fjerne et associeret projekt-objekt
        public void FjernProjekt(int kundeNr, Projekt etProjekt)
        {
            Kunde kunde = FindKunde(kundeNr);
            kunde.FjernProjekt(etProjekt);
        }

        #endregion
    }
}
